Go语言 如何在解组XML时保持元素排序 您所在的位置:网站首页 xml 元素如何嵌套 Go语言 如何在解组XML时保持元素排序

Go语言 如何在解组XML时保持元素排序

#Go语言 如何在解组XML时保持元素排序 | 来源: 网络整理| 查看: 265

我认为,在“encoding/xml”上没有这样的东西,因为由内部元素组成的是xml结构中的不同字段:

此行为的一个替代方法是在最终结构上实现xml.Unmarshaller接口,并手动解码xml字段,将它们保持为相同类型的数组。大概是这样的

type Child struct { Value string TagName string Toto string Data string } type S struct { Fields []Child }

并实现解组拆收器:

func (s *S) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { c := Child{} for { // Token returns the next XML token in the input stream. // At the end of the input stream, Token returns nil, io.EOF. t, _ := d.Token() switch tt := t.(type) { case xml.StartElement: c.TagName = tt.Name.Local if c.TagName == "a" { c.Toto = tt.Attr[0].Value } if c.TagName == "b" { c.Data = tt.Attr[0].Value } case xml.CharData: c.Value = string(tt) case xml.EndElement: if tt.Name.Local == c.TagName { s.Fields = append(s.Fields, c) c = Child{} } case nil: return nil } } }

运行代码:Playground这只是一个例子,但我认为这可能是一个天真的选择为您的情况。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有